//
//  AppDelegate.swift
//  云Sir的微博
//
//  Created by 赵云 on 15/10/8.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

//在类的外面写的常量或者变量就是全局能够访问的
//视图控制器切换通知的字符串
let ZYRootViewControllerSwicthNotification = "ZYRootViewControllerSwicthNotification"

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        //注册通知
        //<#T##observer: AnyObject##AnyObject#> 观察对象 <#T##Selector#> 方法 <#T##String?#> 通知名
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchContoller:", name: ZYRootViewControllerSwicthNotification, object: nil)
        
        isNewUpDate()
        
        print(UserAccount.sharedAccount)
        
        
        //设置外观
        setupAppearance()
        
        //创建窗口
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        //设置背景颜色
        window?.backgroundColor = UIColor.whiteColor()
        //设置根控制器
        window?.rootViewController = defaultController()
        //显示window
        window?.makeKeyAndVisible()
        
        return true
    }
    
    /// 注销通知,有程序销毁才会执行
    deinit{
        
        NSNotificationCenter.defaultCenter().removeObserver(self)
        
    }
    
    //切换控制器
    func switchContoller(n: NSNotification) {
        print("切换控制器 \(n)")
        let mainVc = n.object as! Bool
        
        window?.rootViewController = mainVc ? MainViewController() : WelcomeViewController()
    }
    
    /// 返回默认的启动控制器
    private func defaultController() -> UIViewController{
        //1.判断用户是否登录,如果登录,返回主控制器
        if !UserAccount.userLogon {
            return MainViewController()
        }
        
        //2.检查是否有新版本,如果有新版本返回新特性界面,如果没有,返回欢迎归来
        return isNewUpDate() ? NewFeatureViewController() : WelcomeViewController()
        
    }
    
    
    
    /// 检查是否有新版本
    private func isNewUpDate() -> Bool{
        
        //1.获取当前版本
        let currentVersion = Double(NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String)!
        
        //2.获取程序之前的版本  偏好设置
        let sandboxVersionKey = "sandboxVersionKey"
        
        let sandboxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(sandboxVersionKey)
        
        //3.将当前版本保存到偏好设置中
        NSUserDefaults.standardUserDefaults().setDouble(currentVersion, forKey: sandboxVersionKey)
        //同步 在iOS7.0之后就不需要同步了,在iOS6.0之前,不同步就不会第一时间写入沙盒
        NSUserDefaults.standardUserDefaults().synchronize()
        
        //4.返回之前和当前的比较结果
        return currentVersion > sandboxVersion
     
        
    }
    
   
    
    //设置外观
    private func setupAppearance(){
        
        //设置状态栏外观
        //应该尽早设置  一经设置,全局有效
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        //设置底部栏的外观
        UITabBar.appearance().tintColor = UIColor.orangeColor()
        
        
    }

   
}

